 //
//  AppDelegate.swift
//  Weibo
//
//  Created by Holfioo on 15/8/30.
//  Copyright © 2015年 Holfioo. All rights reserved.
//

import UIKit
import AFNetworking

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?


    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        // 注册通知
        NSNotificationCenter.defaultCenter().addObserver(self, selector: "switchRootController:", name: DHSwitchRootViewController, object: nil)
        
        setupDefault() // 默认状态
        setupNewActive() // 网络小菊花
        //: 设置windows的 根试图 和属性
        window = UIWindow(frame: UIScreen.mainScreen().bounds)
        window?.backgroundColor = UIColor.whiteColor();
        
//        window?.rootViewController = DHMainController()
//        window?.rootViewController = DHWelcomeController()
        // 设置界面跳转
        
        window?.rootViewController = defaultViewController()
        window?.makeKeyAndVisible()
        
        return true
    }
    
    func switchRootController(notification: NSNotification) {
        /// 逻辑判断问题
        /// 1.如果是nil的话。那么是 新特性界面和welcome界面进入的客户。这时候需要给客户切换到 主界面
        /// - returns: 带东西的是 从Oauth进入的客户。此时进入欢迎界面即可
        window?.rootViewController = (notification.object == nil) ? DHMainController() : DHWelcomeController()
    }
    
    private func defaultViewController() -> UIViewController {
        // 判断是否登录。
        if DHUserAccountViewModel.sharedUserAccount.userLogin {
            // 如果登录的话，
            return isNewVersion() ? DHNewFeatureController() : DHWelcomeController()
        }
        return DHMainController()
    }
    // 判断你是否新版本
    private func isNewVersion() -> Bool {
        // 获得当前的版本
        let appVersion = Double(NSBundle.mainBundle().infoDictionary!["CFBundleShortVersionString"] as! String)!
        // 保存当前版本
        let key = "DHSwiftDemo"
        // 取出沙盒中的版本号
        let sanBoxVersion = NSUserDefaults.standardUserDefaults().doubleForKey(key)
        // 保存当前版本
        NSUserDefaults.standardUserDefaults().setDouble(appVersion, forKey: key)
        // 判断当前的版本和沙盒的版本，如果当前的版本大于沙盒版本那么返回YES
        return appVersion > sanBoxVersion
    }
    
    //  设置tabbar和nav的显示样式
    private func setupDefault() {
        // 设置属性
        UINavigationBar.appearance().tintColor = UIColor.orangeColor()
        UITabBar.appearance().tintColor = UIColor.orangeColor()
        // 设置不透明
        UINavigationBar.appearance().translucent = false
        // tabBar.tintColor = UIColor.orangeColor()
    }
    // 设置小菊花和缓存大小
    private func setupNewActive() {
        AFNetworkActivityIndicatorManager.sharedManager().enabled = true;
        // 设置缓存大小。只对afn的函数有用。
        let cache = NSURLCache(memoryCapacity: 4 * 1024 * 1024, diskCapacity: 20 * 1024 * 1024 , diskPath: nil)
        NSURLCache.setSharedURLCache(cache)
    }
    deinit {
//        NSNotificationCenter.defaultCenter().removeObserver(self)
        // 此方法可指定移除某个方法
        NSNotificationCenter.defaultCenter().removeObserver(self, name: DHSwitchRootViewController, object: nil)
    }
}

